#ifndef __MYPROJECT_LIST_H__
#define __MYPROJECT_LIST_H__
//#pragma once
typedef int DATABASE; // 定义元素类型为整型
#define INIT_LIST_SIZE 100 // 线性表存储空间的初始分配量
#define LISTINCREMENT 10 // 线性表存储空间的分配增量

typedef struct sq_list
{
    /* data */
    DATABASE * base;  // 基地址
    int  length; // 当前长度
    int listsize; // 当前分配的存储容量（以元素为单位）
}list;


/*函数*/
list InitList(); // 初始化线性表,构造一个空的线性表L
int ListLength(list L); // 返回线性表的长度
DATABASE GetElem(list L, int i); // 返回线性表L中第i个元素的值
int ListEmpty(list L); // 判断线性表L是否为空
int ListInsert(list *L, int i, DATABASE e); // 在顺序线性表L的第i个位置之前插入新的数据元素e
int ListDelete(list *L, int i); // 删除顺序线性表L的第i个数据元素，并用e返回其值
int LocateElem(list L, DATABASE e,int (*func)(DATABASE,DATABASE)); // 在线性表L中查找与e满足关系func()的数据元素的位序
void DestroyList(list *L); // 销毁线性表
void ClearList(list *L); // 清空线性表
void ListTraverse(list L, void (*func)(DATABASE)); // 遍历线性表L，对每个数据元素调用函数func()
DATABASE NextElem(list L, DATABASE cur_e); // 返回线性表L中紧接着元素cur_e之后的元素值
DATABASE PriorElem(list L, DATABASE cur_e); // 返回线性表L中紧接着元素cur_e之前的元素值

void printElem(list L); // 打印线性表元素








#endif
